<!--
  功能：功能描述
  时间：2022年10月31日 21:58:09
  版本：v1.0
-->
<template xmlns="">
    <el-row
            type="flex"
            justify="center"
            align="middle"
            id="bodylogin"
            class="Login"
    >
        <div class="login">
            <p class="denglu">登录</p>

            <el-form
                    :label-position="labelPosition"
                    label-width="60px"
                    :model="form"
                    class="form"
            >
                <el-form-item label="账号:">
                    <el-input v-model="form.username" placeholder="请输入账号"></el-input>
                </el-form-item>

                <el-form-item label="密码:">
                    <el-input
                            v-model="form.password"
                            show-password
                            placeholder="请输入密码"
                    ></el-input>
                </el-form-item>

                <el-form-item>
                    <el-button style="width: 150px" type="primary" plain @click="onsubmit"
                    >登录
                    </el-button
                    >
                    <el-button style="width: 150px" type="primary" plain @click="register"
                    >注册
                    </el-button
                    >
                </el-form-item>
            </el-form>
        </div>
    </el-row>
</template>

<script>
import {login} from "@/plugins/request";
import store from "@/store";

export default {
    // 组件名称
    name: "Login",
    // 组件参数 接收来自父组件的数据
    props: {},
    // 局部注册的组件,import引入的组件需要注入到对象中才能使用
    components: {},
    // 组件状态值
    data() {
        return {
            labelPosition: "center",
            form: {
                username: "",
                password: "",
            },
            loading: false,
        };
    },
    // 计算属性
    computed: {},
    // 侦听器
    watch: {},
    // 组件方法
    methods: {
        /* 登录发送请求 */
        async onsubmit() {
            console.log("登录" + this.form.username);
            console.log("密码" + this.form.password);
            let res = await login(this.form)
            //这里为什么只需要考虑正确情况呢 因为错误情况已经放到handleError中处理了
            if (res.status === 200) {
                let {token} = res.data
                store.commit('SET_TOKEN',token)
                await this.$router.push("/goods");
            }

        },
        register() {
            console.log("ddd");
            this.$router.replace("/register");
        },
    },
    // 以下是生命周期钩子   注：没用到的钩子请自行删除
    /**
     * 在实例初始化之后，组件属性计算之前，如data属性等
     */
    beforeCreate() {
    },
    /**
     * 组件实例创建完成，属性已绑定，但DOM还未生成，$ el属性还不存在
     */
    created() {
    },
    /**
     * 在挂载开始之前被调用：相关的 render 函数首次被调用。
     */
    beforeMount() {
    },
    /**
     * el 被新创建的 vm.$ el 替换，并挂载到实例上去之后调用该钩子。
     * 如果 root 实例挂载了一个文档内元素，当 mounted 被调用时 vm.$ el 也在文档内。
     */
    mounted() {
    },
    /**
     * 数据更新时调用，发生在虚拟 DOM 重新渲染和打补丁之前。
     * 你可以在这个钩子中进一步地更改状态，这不会触发附加的重渲染过程。
     */
    beforeUpdate() {
    },
    /**
     * 由于数据更改导致的虚拟 DOM 重新渲染和打补丁，在这之后会调用该钩子。
     * 当这个钩子被调用时，组件 DOM 已经更新，所以你现在可以执行依赖于 DOM 的操作。
     */
    updated() {
    },
    /**
     * keep-alive 组件激活时调用。 仅针对keep-alive 组件有效
     */
    activated() {
    },
    /**
     * keep-alive 组件停用时调用。 仅针对keep-alive 组件有效
     */
    deactivated() {
    },
    /**
     * 实例销毁之前调用。在这一步，实例仍然完全可用。
     */
    beforeDestroy() {
    },
    /**
     * Vue 实例销毁后调用。调用后，Vue 实例指示的所有东西都会解绑定，
     * 所有的事件监听器会被移除，所有的子实例也会被销毁。
     */
    destroyed() {
    },
};
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<!--使用了scoped属性之后，父组件的style样式将不会渗透到子组件中，-->
<!--然而子组件的根节点元素会同时被设置了scoped的父css样式和设置了scoped的子css样式影响，-->
<!--这么设计的目的是父组件可以对子组件根元素进行布局。-->
<style>
.login {
    /* 背景图片 */

    background-image: url(../assets/loginBG.jpg);
    background-size: 100% 100%;

    /* background-color: powderblue; */

    margin-top: 10rem;
    border-radius: 12px;
    /* 内边距 */
    padding: 20px;
    text-align: center;
    box-shadow: 0 8px 5px rgba(0, 0, 0, 0.12), 0 0 6px rgba(0, 0, 0, 0.04);
}

/* /账号密码高清/ */
.form .el-form-item__label {
    color: white;
    border-radius: 10px;
}

/* 登录文字 */
.denglu {
    color: #fff;
    font-size: 20px;
}

/* 背景图片 */
body {
    background-image: url(../assets/loginBG.jpg);
    background-size: 100% 100%;
    background-attachment: fixed;
}

.label-position {
    background-color: #000000;
}
</style>
